package com.yc.demo.d0110;

// 请求转发

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/forward")
public class ForwardServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        if (req.getParameter("a") != null){
            // 请求转发 跳转到 MathServlet
            final RequestDispatcher rd = req.getRequestDispatcher("/MathServlet");
            rd.forward(req, resp);
        } else if (req.getParameter("edu") != null ||
                req.getParameter("likes") != null){
            // 请求转发 跳转到 YouItemServlet
            final RequestDispatcher rd = req.getRequestDispatcher("/YouItemServlet");
            rd.forward(req, resp);
        } else if (req.getParameter("baidu_1") != null){
            // 请求转发
            final RequestDispatcher rd = req.getRequestDispatcher("Http://baidu.com");
            rd.forward(req, resp);
        } else if (req.getParameter("baidu_2") != null){
            // 响应重定向
            resp.sendRedirect("http://baidu.com");
        } else {
            // 响应重定向到 result.html
            resp.sendRedirect("result.html");
        }

        /**
         * 请求转发和响应重定向的区别
         * 1.请求转发是内部跳转，响应重定向是外部跳转
         *      内部 => 服务器， 外部 => 服务器外部 => 浏览器
         * 2.请求转发：地址栏不变，    响应重定向：改变
         * 3.请求转发：只能跳转到服务器内部资源
         *   响应重定向：可以跳转到服务器外部资源
         * 4.请求转发：效率高。反之~~~
         */
    }
}
